package com.utn.disenio.entrega3;

import java.util.ArrayList;
import java.util.Iterator;

import com.utn.disenio.entrega2.Asiento;

public class Viaje {
        float precio;
        String tiempoTotal;
        String tiempoDeConexion;
        String tiempoDuracion;
        ArrayList<Asiento> asientos;
        
        public Viaje(Asiento asientoUno, Asiento asientoDos, Asiento asientoTres) throws Exception
        {
                int hora = 0;
                int minutos = 0;
                int horaEsp = 0;
                int minEsp = 0;
                this.precio = 0;
                
                this.asientos = new ArrayList<Asiento>();
                this.asientos.add(asientoUno);
                if(asientoDos != null)
                        this.asientos.add(asientoDos);
                if(asientoTres != null)
                        this.asientos.add(asientoTres);
                
                Asiento asientoAnterior = null;
                
                Iterator<Asiento> iterador = asientos.iterator();
                while(iterador.hasNext()) {
                        Asiento asientoAux = iterador.next();
                        precio += asientoAux.getPrecio();
                        int[] horario;
                        horario = asientoAux.getDuracion();
                        hora = hora + horario[0];
                        minutos = minutos + horario[1];
                        
                        if(asientoAnterior != null)
                        {
                                int[] horarioEspera = asientoAux.calcularDuracion(asientoAnterior.getFechaLle(), asientoAux.getFechaSal(), asientoAnterior.getHoraLle(), asientoAux.getHoraSal());
                                horaEsp = horaEsp + horarioEspera[0];
                                minEsp = minEsp + horarioEspera[1];
                        }
                        
                        asientoAnterior = asientoAux;
        
                }
                        String shora = String.valueOf(hora);
                        String sminutos = String.valueOf(minutos);
                        this.tiempoDuracion = shora+":"+sminutos;
                        String shoraEsp = String.valueOf(horaEsp);
                        String sminutosEsp = String.valueOf(minEsp);
                        this.tiempoDeConexion = shoraEsp+":"+sminutosEsp;
                        String sHoraTot = String.valueOf(horaEsp + hora);
                        String sMinutosTot = String.valueOf(minEsp + minutos);
                        this.tiempoTotal = sHoraTot+":"+sMinutosTot;
        }
        
        public String getTiempoDeConexion() {
                return this.tiempoDeConexion;
        }
        
        public String getTiempoDeDuracion(){
                return this.tiempoDuracion;
        }
        
        public String getTiempoTotal(){
                return this.tiempoTotal;
        }

        public float getPrecio() {
                return this.precio;
        }
        
        public Asiento getAsientoUno(){
                return this.asientos.get(0);
        }
        
        public Asiento getAsientoDos(){
                return this.asientos.get(1);
        }
        
        public Asiento getAsientoTres(){
                return this.asientos.get(2);
        }

		public boolean estaReservado() {
			boolean estado = false;
			for(Asiento unAsiento: this.asientos){
				if(unAsiento.getEstado().equals("R"))
					estado = true;
			}
			return estado;
		}
}